package com.slofzx.nuoda.evaluation.version.dto;


import com.baomidou.mybatisplus.annotation.TableField;
import com.slofzx.nuoda.common.dto.CommonFilterQueryDTO;
import com.slofzx.nuoda.common.dto.PageDTO;
import org.apache.ibatis.type.JdbcType;

import java.util.Date;
import java.util.Map;
import java.util.Set;

/**
 * 评价版本数据传递类
 *
 * @author nuoda
 * @since 2021-11-19 15:56:00
 */
public class ComputeVersionDTO extends CommonFilterQueryDTO {
    private static final long serialVersionUID = -41865749690598112L;
    /**
     * 数据id
     */
    private String id;
    /**
     * 名称
     */
    private String name;
    /**
     * 项目ID
     */
    private String projectId;

    /**
     * 任务id
     */
    private String batchId;
    /**
     * 附加评价方法 subtract:对减法
     */
    private String extraEvaluateMethod;
    /**
     * 评价模型ID
     */
    private String modelId;
    /**
     * 建设期年限
     */
    private int buildYearCount;
    /**
     * 评价开始年份
     */
    private int calculateYearStart;
    /**
     * 评价结束年份
     */
    private int calculateYearEnd;
    /**
     * 备注
     */
    private String remark;
    /**
     * 类型
     */
    private String type;
    /**
     * 内部收益率税前
     */
    private double irrBeforeTax;
    /**
     * 内部收益率税后
     */
    private double irrAfterTax;
    /**
     * 投资回收期税前
     */
    private double pbpBeforeTax;
    /**
     * 投资回收期税后
     */
    private double pbpAfterTax;
    /**
     * 财务净现值税前
     */
    private double npvBeforeTax;
    /**
     * 财务净现值税后
     */
    private double npvAfterTax;
    /**
     * 是否截断
     */
    private boolean cutoff;

    /**
     * 审核是否通过
     */
    private boolean pass;

    /**
     * 基准收益率
     */
    private double baseIrr;

    /**
     * 过滤项目
     */
    private Set<String> filterProjectSet;
    /**
     * 过滤项目
     */
    private Set<String> filterParentSet;

    /**
     * 过滤类型
     */
    private Set<String> filterTypeSet;

    /**
     * 录入数据
     */
    private Map<String,Map<String, Map<Integer,String>>> dataMap;

    /**
     * 来源版本
     */
    private String sourceId;
    /**
     * 父级版本
     */
    private String parentId;
    /**
     * 特殊标记
     */
    private String mark;
    /**
     * 关联版本1
     */
    private String related1;
    /**
     * 关联版本2
     */
    private String related2;

    /**
     * 上报时间
     */
    private Date reportTime;

    /**
     * 是否需要记录计算过程日志
     */
    private boolean logDetail;

    /**
     * 是否拉齐计算
     */
    private boolean costPull;

    private boolean generateReport;

    private Integer versionNum;
    /**
     * 计算时间
     */
    private Date computeTime;

    /**
     * 达标情况
     */
    private String passed;

    /**
     * 公共参数版本
     */
    private String paramVersion;

    /**
     * 创建后是否自动计算
     */
    private boolean autoCompute;


    /**
     * 经济极限年
     */
    private Integer economicLimitYear;

    /**
     * 总投资
     */
    @TableField(jdbcType = JdbcType.NUMERIC)
    private Double totalInvest;

    /**
     * 是否最终版本
     */
    @TableField(jdbcType = JdbcType.NUMERIC)
    private boolean ultimate;


    /**
     * 建设投资
     */
    private Double constructionInvest;

    /**
     * 单位完全成本(美元/桶)
     */
    private Double unitTotalOperateCostDollar;
    /**
     * 单位操作成本(美元/桶)
     */
    private Double unitOperateCostDollar;

    /**
     * 总完全成本(美元/桶)
     */
    private Double totalOperateCostDollar;
    /**
     * 总操作成本(美元/桶)
     */
    private Double operateCostDollar;

    /**
     * 原油商品量(美元)
     */
    private Double oilCommodityVolumeDollar;
    /**
     * 总完全成本(元/吨)
     */
    private Double unitTotalOperateCost;
    /**
     * 总操作成本(元/吨)
     */
    private Double unitOperateCost;
    /**
     * 单位操作成本(元/吨)
     */
    private Double balanceConstructionInvest;
    /**
     * 单位操作成本(元/吨)
     */
    private Double balanceSumOilOutput;
    /**
     * 单位操作成本(元/吨)
     */
    private Double balanceSumGasOutput;

    public Double getBalanceConstructionInvest() {
        return balanceConstructionInvest;
    }

    public void setBalanceConstructionInvest(Double balanceConstructionInvest) {
        this.balanceConstructionInvest = balanceConstructionInvest;
    }

    public Double getBalanceSumOilOutput() {
        return balanceSumOilOutput;
    }

    public void setBalanceSumOilOutput(Double balanceSumOilOutput) {
        this.balanceSumOilOutput = balanceSumOilOutput;
    }

    public Double getBalanceSumGasOutput() {
        return balanceSumGasOutput;
    }

    public void setBalanceSumGasOutput(Double balanceSumGasOutput) {
        this.balanceSumGasOutput = balanceSumGasOutput;
    }
    public Double getUnitTotalOperateCost() {
        return unitTotalOperateCost;
    }

    public void setUnitTotalOperateCost(Double unitTotalOperateCost) {
        this.unitTotalOperateCost = unitTotalOperateCost;
    }

    public Double getUnitOperateCost() {
        return unitOperateCost;
    }

    public void setUnitOperateCost(Double unitOperateCost) {
        this.unitOperateCost = unitOperateCost;
    }

    public Double getTotalOperateCostDollar() {
        return totalOperateCostDollar;
    }

    public void setTotalOperateCostDollar(Double totalOperateCostDollar) {
        this.totalOperateCostDollar = totalOperateCostDollar;
    }

    public Double getOperateCostDollar() {
        return operateCostDollar;
    }

    public void setOperateCostDollar(Double operateCostDollar) {
        this.operateCostDollar = operateCostDollar;
    }

    public Double getOilCommodityVolumeDollar() {
        return oilCommodityVolumeDollar;
    }

    public void setOilCommodityVolumeDollar(Double oilCommodityVolumeDollar) {
        this.oilCommodityVolumeDollar = oilCommodityVolumeDollar;
    }

    public Double getUnitTotalOperateCostDollar() {
        return unitTotalOperateCostDollar;
    }

    public void setUnitTotalOperateCostDollar(Double unitTotalOperateCostDollar) {
        this.unitTotalOperateCostDollar = unitTotalOperateCostDollar;
    }

    public Double getUnitOperateCostDollar() {
        return unitOperateCostDollar;
    }

    public void setUnitOperateCostDollar(Double unitOperateCostDollar) {
        this.unitOperateCostDollar = unitOperateCostDollar;
    }

    public Double getConstructionInvest() {
        return constructionInvest;
    }

    public void setConstructionInvest(Double constructionInvest) {
        this.constructionInvest = constructionInvest;
    }


    public ComputeVersionDTO() {
        //默认查询不分页
        this.pageSize = PageDTO.ALL;
    }

    public boolean isUltimate() {
        return ultimate;
    }

    public void setUltimate(boolean ultimate) {
        this.ultimate = ultimate;
    }

    public String getPassed() {
        return passed;
    }

    public void setPassed(String passed) {
        this.passed = passed;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getModelId() {
        return modelId;
    }

    public void setModelId(String modelId) {
        this.modelId = modelId;
    }

    public int getBuildYearCount() {
        return buildYearCount;
    }

    public void setBuildYearCount(int buildYearCount) {
        this.buildYearCount = buildYearCount;
    }

    public int getCalculateYearStart() {
        return calculateYearStart;
    }

    public void setCalculateYearStart(int calculateYearStart) {
        this.calculateYearStart = calculateYearStart;
    }

    public int getCalculateYearEnd() {
        return calculateYearEnd;
    }

    public void setCalculateYearEnd(int calculateYearEnd) {
        this.calculateYearEnd = calculateYearEnd;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public double getIrrBeforeTax() {
        return irrBeforeTax;
    }

    public void setIrrBeforeTax(double irrBeforeTax) {
        this.irrBeforeTax = irrBeforeTax;
    }

    public double getIrrAfterTax() {
        return irrAfterTax;
    }

    public void setIrrAfterTax(double irrAfterTax) {
        this.irrAfterTax = irrAfterTax;
    }

    public double getPbpBeforeTax() {
        return pbpBeforeTax;
    }

    public void setPbpBeforeTax(double pbpBeforeTax) {
        this.pbpBeforeTax = pbpBeforeTax;
    }

    public double getPbpAfterTax() {
        return pbpAfterTax;
    }

    public void setPbpAfterTax(double pbpAfterTax) {
        this.pbpAfterTax = pbpAfterTax;
    }

    public double getNpvBeforeTax() {
        return npvBeforeTax;
    }

    public void setNpvBeforeTax(double npvBeforeTax) {
        this.npvBeforeTax = npvBeforeTax;
    }

    public double getNpvAfterTax() {
        return npvAfterTax;
    }

    public void setNpvAfterTax(double npvAfterTax) {
        this.npvAfterTax = npvAfterTax;
    }

    public boolean isCutoff() {
        return cutoff;
    }

    public void setCutoff(boolean cutoff) {
        this.cutoff = cutoff;
    }

    public Set<String> getFilterProjectSet() {
        return filterProjectSet;
    }

    public void setFilterProjectSet(Set<String> filterProjectSet) {
        this.filterProjectSet = filterProjectSet;
    }

    public Set<String> getFilterTypeSet() {
        return filterTypeSet;
    }

    public void setFilterTypeSet(Set<String> filterTypeSet) {
        this.filterTypeSet = filterTypeSet;
    }

    public boolean isPass() {
        return pass;
    }

    public void setPass(boolean pass) {
        this.pass = pass;
    }

    public Map<String, Map<String, Map<Integer, String>>> getDataMap() {
        return dataMap;
    }

    public void setDataMap(Map<String, Map<String, Map<Integer, String>>> dataMap) {
        this.dataMap = dataMap;
    }

    public String getParentId() {
        return parentId;
    }



    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    public String getSourceId() {
        return sourceId;
    }

    public void setSourceId(String sourceId) {
        this.sourceId = sourceId;
    }

    public Set<String> getFilterParentSet() {
        return filterParentSet;
    }

    public void setFilterParentSet(Set<String> filterParentSet) {
        this.filterParentSet = filterParentSet;
    }

    public String getRelated1() {
        return related1;
    }

    public void setRelated1(String related1) {
        this.related1 = related1;
    }

    public String getRelated2() {
        return related2;
    }

    public void setRelated2(String related2) {
        this.related2 = related2;
    }

    public Date getReportTime() {
        return reportTime;
    }

    public void setReportTime(Date reportTime) {
        this.reportTime = reportTime;
    }

    public String getExtraEvaluateMethod() {
        return extraEvaluateMethod;
    }

    public void setExtraEvaluateMethod(String extraEvaluateMethod) {
        this.extraEvaluateMethod = extraEvaluateMethod;
    }

    public boolean isLogDetail() {
        return logDetail;
    }

    public void setLogDetail(boolean logDetail) {
        this.logDetail = logDetail;
    }

    public boolean isCostPull() {
        return costPull;
    }

    public void setCostPull(boolean costPull) {
        this.costPull = costPull;
    }

    public boolean isGenerateReport() {
        return generateReport;
    }

    public void setGenerateReport(boolean generateReport) {
        this.generateReport = generateReport;
    }

    public Integer getVersionNum() {
        return versionNum;
    }

    public void setVersionNum(Integer versionNum) {
        this.versionNum = versionNum;
    }

    public boolean isAutoCompute() {
        return autoCompute;
    }

    public void setAutoCompute(boolean autoCompute) {
        this.autoCompute = autoCompute;
    }

    public String getBatchId() {
        return batchId;
    }

    public void setBatchId(String batchId) {
        this.batchId = batchId;
    }

    public String getParamVersion() {
        return paramVersion;
    }

    public void setParamVersion(String paramVersion) {
        this.paramVersion = paramVersion;
    }

    public Date getComputeTime() {
        return computeTime;
    }

    public void setComputeTime(Date computeTime) {
        this.computeTime = computeTime;
    }

    public Integer getEconomicLimitYear() {
        return economicLimitYear;
    }

    public void setEconomicLimitYear(Integer economicLimitYear) {
        this.economicLimitYear = economicLimitYear;
    }

    public Double getTotalInvest() {
        return totalInvest;
    }

    public void setTotalInvest(Double totalInvest) {
        this.totalInvest = totalInvest;
    }

    public double getBaseIrr() {
        return baseIrr;
    }

    public void setBaseIrr(double baseIrr) {
        this.baseIrr = baseIrr;
    }

    @Override
    public String toString() {
        return "ComputeVersionDTO{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", projectId='" + projectId + '\'' +
                ", batchId='" + batchId + '\'' +
                ", extraEvaluateMethod='" + extraEvaluateMethod + '\'' +
                ", modelId='" + modelId + '\'' +
                ", buildYearCount=" + buildYearCount +
                ", calculateYearStart=" + calculateYearStart +
                ", calculateYearEnd=" + calculateYearEnd +
                ", remark='" + remark + '\'' +
                ", type='" + type + '\'' +
                ", irrBeforeTax=" + irrBeforeTax +
                ", irrAfterTax=" + irrAfterTax +
                ", pbpBeforeTax=" + pbpBeforeTax +
                ", pbpAfterTax=" + pbpAfterTax +
                ", npvBeforeTax=" + npvBeforeTax +
                ", npvAfterTax=" + npvAfterTax +
                ", cutoff=" + cutoff +
                ", pass=" + pass +
                ", filterProjectSet=" + filterProjectSet +
                ", filterParentSet=" + filterParentSet +
                ", filterTypeSet=" + filterTypeSet +
                ", dataMap=" + dataMap +
                ", sourceId='" + sourceId + '\'' +
                ", parentId='" + parentId + '\'' +
                ", mark='" + mark + '\'' +
                ", related1='" + related1 + '\'' +
                ", related2='" + related2 + '\'' +
                ", reportTime=" + reportTime +
                ", logDetail=" + logDetail +
                ", costPull=" + costPull +
                ", generateReport=" + generateReport +
                ", versionNum=" + versionNum +
                ", computeTime=" + computeTime +
                ", paramVersion='" + paramVersion + '\'' +
                ", autoCompute=" + autoCompute +
                ", economicLimitYear=" + economicLimitYear +
                ", totalInvest=" + totalInvest +
                ", pageNo=" + pageNo +
                ", pageSize=" + pageSize +
                ", count=" + count +
                '}';
    }
}
